Outliers হল ডেটা সেটের এমন তথ্য, যা মূল ডেটার থেকে ব্যাপকভাবে আলাদা বা ভিন্ন থাকে। এই অস্বাভাবিক ডেটা পয়েন্টগুলি ডেটার মধ্যে অস্বাভাবিকতা বা ভিন্নতা নির্দেশ করে এবং কখনও কখনও এটি ভুল বা অপ্রয়োজনীয় হতে পারে। ডেটা সায়েন্স, মেশিন লার্নিং এবং পরিসংখ্যান বিশ্লেষণে এই আউটলায়ারগুলির সঠিক সনাক্তকরণ এবং অপসারণ গুরুত্বপূর্ণ হতে পারে, কারণ তারা মডেলিং বা ডেটা বিশ্লেষণের ফলাফলে প্রভাব ফেলতে পারে।
Outliers সনাক্ত এবং অপসারণের জন্য বিভিন্ন পদ্ধতি রয়েছে। নিচে কিছু সাধারণ Outliers Detection এবং Removal Techniques নিয়ে আলোচনা করা হলো।
১. Statistical Methods
১.১. Z-Score (Standard Score)
Z-score একটি পরিমাপ যা ডেটা পয়েন্টের গড় থেকে কত স্ট্যান্ডার্ড ডিভিয়েশন দূরে রয়েছে তা নির্ধারণ করে। যদি Z-score একটি ডেটা পয়েন্টের জন্য বেশি বা কম থাকে, তবে সেই পয়েন্টটি আউটলায়ার হতে পারে।
- Formula: যেখানে:
- = ডেটা পয়েন্ট
- = গড় (mean)
- = স্ট্যান্ডার্ড ডিভিয়েশন
Outlier Detection:
- Z-score সাধারণত হলে সেই পয়েন্টটিকে আউটলায়ার হিসেবে চিহ্নিত করা হয়।
Example:
import numpy as np
from scipy import stats
data = [10, 12, 10, 11, 100, 13, 12, 11]
z_scores = np.abs(stats.zscore(data))
outliers = np.where(z_scores > 2)
print("Outliers at index:", outliers)
১.২. IQR (Interquartile Range)
IQR হলো 75th percentile (Q3) এবং 25th percentile (Q1) এর মধ্যে পার্থক্য। সাধারণত, ডেটা পয়েন্ট যদি Q1 - 1.5IQR এর নিচে অথবা Q3 + 1.5IQR এর উপরে থাকে, তাহলে তা আউটলায়ার হিসেবে গণ্য করা হয়।
- Formula:
Outlier Detection:
- যদি কোনো পয়েন্ট এই রেঞ্জের বাইরে থাকে, তবে সেটি আউটলায়ার হিসেবে চিহ্নিত হয়।
Example:
import numpy as np
data = [10, 12, 10, 11, 100, 13, 12, 11]
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = [x for x in data if x < lower_bound or x > upper_bound]
print("Outliers:", outliers)
২. Visualization Methods
২.১. Box Plot
Box plot (যা box-and-whisker plot নামেও পরিচিত) ব্যবহার করে আউটলায়ার সনাক্ত করা খুবই সহজ। এটি ডেটার মিন, কুইন্টারাইল, এবং আউটলায়ারের সীমা প্রদর্শন করে।
- Box Plot-এ Q1 এবং Q3 এর মধ্যে 50% ডেটা থাকে, এবং এর বাইরে থাকা পয়েন্টগুলি আউটলায়ার হিসেবে গণ্য হয়।
- উপরের এবং নিচের উষ্ণতা (whiskers) থেকে বেরিয়ে আসা পয়েন্টগুলি আউটলায়ার হতে পারে।
Example:
import matplotlib.pyplot as plt
data = [10, 12, 10, 11, 100, 13, 12, 11]
plt.boxplot(data)
plt.title("Boxplot for Outlier Detection")
plt.show()
২.২. Scatter Plot
Scatter plot (বিবরণী গ্রাফ) আউটলায়ার সনাক্ত করতে একটি কার্যকরী পদ্ধতি। এতে ডেটা পয়েন্টগুলি প্রদর্শিত হয় এবং কোনও ডেটা পয়েন্ট যে ক্ষেত্র থেকে অনেক দূরে আছে তা সোজাসুজি দেখা যায়।
Example:
import matplotlib.pyplot as plt
data = [10, 12, 10, 11, 100, 13, 12, 11]
plt.scatter(range(len(data)), data)
plt.title("Scatter Plot for Outlier Detection")
plt.show()
৩. Machine Learning Methods
৩.১. Isolation Forest
Isolation Forest একটি মেশিন লার্নিং অ্যালগরিদম যা আউটলায়ার সনাক্ত করতে ব্যবহৃত হয়। এটি অন্যান্য পয়েন্টের থেকে আলাদা বা বিচ্ছিন্ন পয়েন্ট সনাক্ত করার জন্য বায়াসড অ্যালগরিদম।
- Isolation Forest-এ আউটলায়ারগুলি দ্রুত আইসোলেট করা হয় এবং এটি ব্যাকগ্রাউন্ড ডেটা থেকে বিচ্ছিন্ন থাকে।
Example:
from sklearn.ensemble import IsolationForest
data = [[10], [12], [10], [11], [100], [13], [12], [11]]
model = IsolationForest(contamination=0.25)
model.fit(data)
outliers = model.predict(data)
print("Outliers detected:", outliers)
৩.২. Local Outlier Factor (LOF)
LOF অ্যালগরিদম ব্যবহার করে ডেটা পয়েন্টের সান্নিধ্য মূল্যায়ন করা হয়। একটি পয়েন্ট যদি এর নিকটবর্তী প্রতিবেশীদের তুলনায় খুব ভিন্ন হয়, তবে এটি আউটলায়ার হিসেবে চিহ্নিত হয়।
Example:
from sklearn.neighbors import LocalOutlierFactor
data = [[10], [12], [10], [11], [100], [13], [12], [11]]
model = LocalOutlierFactor(n_neighbors=2)
outliers = model.fit_predict(data)
print("Outliers detected:", outliers)
৪. Outliers Removal Techniques
৪.১. Remove Outliers Based on Z-Score
যদি Z-score একটি ডেটা পয়েন্টের জন্য 3 এর বেশি (বা কম) হয়, তাহলে সেই পয়েন্টটি অপসারণ করা যেতে পারে।
Example:
import numpy as np
from scipy import stats
data = [10, 12, 10, 11, 100, 13, 12, 11]
z_scores = np.abs(stats.zscore(data))
# Remove outliers
clean_data = [data[i] for i in range(len(data)) if z_scores[i] < 3]
print("Clean data:", clean_data)
৪.২. Remove Outliers Based on IQR
IQR ব্যবহার করে সনাক্ত করা আউটলায়ারগুলি সরিয়ে ফেলা যায়। যদি ডেটা একটি নির্দিষ্ট রেঞ্জের মধ্যে না থাকে, তবে এটি সরিয়ে নেওয়া উচিত।
Example:
import numpy as np
data = [10, 12, 10, 11, 100, 13, 12, 11]
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# Remove outliers
clean_data = [x for x in data if x >= lower_bound and x <= upper_bound]
print("Clean data:", clean_data)
সারাংশ
Outliers Detection এবং Removal প্রক্রিয়া ডেটার সঠিক বিশ্লেষণের জন্য গুরুত্বপূর্ণ। বিভিন্ন পদ্ধতি যেমন Z-Score, IQR, Boxplot, Scatterplot, এবং Machine Learning Methods (Isolation Forest, LOF) আউটলায়ার সনাক্তকরণে ব্যবহৃত হয়। Outliers Removal করার সময়, এটি নিশ্চিত করা উচিত যে আউটলায়ারগুলি সঠিকভাবে চিহ্নিত এবং অপসারণ করা হয়েছে যাতে মডেল বা বিশ্লেষণ কার্যকর ও নির্ভুল হয়।
Read more